package com.baofu.paycore.service.facade.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 资金渠道参数父类
 *
 * User: LZQ
 * Date: 14-11-20
 */
@Getter
@Setter
@ToString
public class FundBaseDTO implements Serializable{

    /**
     * 序列化ID
     */
    private static final long serialVersionUID = 8329367670135706534L;

    /**
     * 支付工具类型
     */
    @Length(max = 16,message = "支付工具类型不能超过16位")
    @NotNull(message = "支付工具类型不能为空或空格")
    private String payToolType;

    /**
     * 支付工具子类型
     */
    @Length(max = 16,message = "支付工具子类型长度不能超过16位")
    private String payToolSubType;

    /**
     * 银行代码
     */
    private String bankCode;

    /**
     * 卡类型
     */
    private String cardType;

    /**
     * 公私标识
     */
    private String opFlag;

    /**
     * 协议组成编号
     */
    private String  agreeRelId;

    /**
     * 绑卡协议号
     */
    private String agreementNo;

    /**
     * 货币
     */
    @NotBlank(message = "货币类型不能为空")
    @Length(max = 3,message = "货币最大长度为3位")
    private String ccy;

    /**
     * 渠道支付金额
     */
    @Min(value = 1, message = "交易金额必须大于0")
    private Long amt;

    /**
     * 业务收费金额
     */
    private Long bizChargeAmount;

    /**
     * 业务手续费账户
     */
    private String bizFeeAccount;

    /**
     * 备注
     */
    @Length(max = 128, message = "备注信息长度不能超过128位")
    private String description;

}
